package domein;

import java.io.Serializable;
import java.text.ParseException;
import java.util.Calendar;

import utilities.DateHelper;

public abstract class Persoon implements Serializable {
	protected String achternaam;
	protected String voornaam;
	protected String adres;
	protected String email;
	protected String telefoon;
	protected String woonplaats;
	protected Calendar geboortedatum = Calendar.getInstance();


	public void setGeboorte(Calendar aGeboorte) 
			throws IllegalArgumentException {
		if (geboortedatum != null) {

			throw new IllegalArgumentException(
					"Geboortedatum kan niet leeggelaten worden");
		}
		geboortedatum = aGeboorte;

	}

	public void setGeboorte(String aGeboorte) throws ParseException {
		geboortedatum = DateHelper.converteerStringNaarDatum(aGeboorte);
	}
	

	public void setAchternaam(String anAchternaam)
			throws IllegalArgumentException {
		if (anAchternaam == null || anAchternaam.isEmpty()) {
			throw new IllegalArgumentException(
					"Achternaam kan niet leeggelaten worden");
		}
		achternaam = anAchternaam;
	}

	public void setVoornaam(String aVoornaam) throws IllegalArgumentException {
		if (aVoornaam == null || aVoornaam.isEmpty()) {
			throw new IllegalArgumentException(
					"Voornaam kan niet leeggelaten worden");
		}
		voornaam = aVoornaam;
	}
	

	public void setAdres(String anAdres) throws IllegalArgumentException {
		if (anAdres == null || anAdres.isEmpty()) {
			throw new IllegalArgumentException(
					"Adres kan niet leeggelaten worden");
		}
		adres = anAdres;
	}

	public void setEmail(String anEmail) throws IllegalArgumentException {
		if (anEmail.isEmpty()) {
			throw new IllegalArgumentException(
					"Email kan niet leeggelaten worden");
		}
		email = anEmail;
	}

	public void setTelefoon(String aTelefoon) {
		telefoon = aTelefoon;
	}

	public void setWoonplaats(String aWoonplaats)
			throws IllegalArgumentException {
		if (aWoonplaats == null || aWoonplaats.isEmpty()) {
			throw new IllegalArgumentException(
					"Woonplaats kan niet leeggelaten worden");
		}
		woonplaats = aWoonplaats;
	}
	
	public String getEmail() {
		return email;
	}

	public String getNaam() {
		return voornaam;
	}

	public String getAchterNaam() {
		return achternaam;
	}

	public Calendar getGeboorte() {
		return geboortedatum;
	}
	
	public String getTelefoon() {
		return telefoon;
	}
	
	public String getAdres() {
		return adres;
	}
	
	public String getWoonplaats() {
		return woonplaats;
	}
	
	public String getGeboorteString() {	
		return DateHelper.converteerDatumNaarString(geboortedatum);
		
	}
}